草庐IT

Java Swingworker 和多线程

全部标签

android - WebView 的 loadUrl 方法是否在 UI 线程上运行?

我想知道webview如何加载特定的URL。它是创建一个新线程还是在同一线程(即UI线程)中加载URL?我问这个的原因是当我从当前Activity(在当前Activity的onCreate方法中)启动一个Activity时,它在它的onCreate方法中创建一个WebView并使用loadUrl方法加载一个URL时,我遇到了一些奇怪的唤醒锁问题。因此,当我完成此Activity并返回启动的Activity时,由于唤醒锁定时间已过期,此Activity将重新启动。我用谷歌搜索了一下,发现如果Activity的onCreate方法花费的时间太长,那么这种类型的可能会出现问题。你们中有人遇到

android - 从线程中停止 Android 服务

我有一个在onCreate()期间启动线程的服务。该线程正在监视硬件(IOIO),一旦断开连接就会结束,因此本质上是一个无限循环。从Activity停止服务工作正常,线程也停止(在onDestory()中结束)。我的问题是,如果线程终止(比如由于异常),是否可以停止生成它的服务。我尝试在线程代码中使用stopSelf(),但服务没有停止。谢谢ps我的第一篇文章,所以请原谅我应该遵循的任何遗漏约定。 最佳答案 我想你在这里想要的可能是使用Handler.本质上,为您的Sevrice创建一个处理程序(确保它是最终的,以便您可以跨所有线程

android - 完全使用 native 代码(无 JNI)从后台线程更新 UI?

我正在编写一个在后台线程中执行大量处理的Android应用程序。计算是使用C++在native代码中执行的。我想在计算期间使用部分结果更新UI。我可以通过JNI做到这一点,即在java中设置对UI对象的引用,然后通过JNI从native代码调用该对象的方法。我正在寻找一种在渲染部分没有任何JNI调用的更有效的解决方案(基本设置和激活入口点必须在Java中)。是否可以在不使用JNI的情况下(仅在渲染部分)完全在native代码中将执行线程从后台更改为UI?感谢您的回答。非常感激。编辑:我正在考虑使用OpenGL在我的View中呈现计算内容(某种视频帧)。在那种情况下,我可能想使用eglS

java - Java中的线程池

我使用ThreadPool在Java中编写应用程序。首先我创建新的线程池:privateExecutorServicethreadExecutor=Executors.newFixedThreadPool(20);然后我创建了一些Runnable对象。之后我执行我的ThreadPool时不时地传递给他相同的Runnable对象:threadExecutor.execute(serverRunnable);我每20秒执行一次这个线程池。我的问题是threadExecutor停止工作大约5分钟。它只是不执行Runnable对象。我注意到当我增加参数时:Executors.newFixedT

java - 通知单线程 : notify, notifyAll or concurrent.locks.Condition?

有时我需要唤醒或hibernate一个单个线程,我想知道什么是最好和最有效的方法。第一个解决方案是信号与wait-notify相结合(我知道如何正确实现这种模式,这不是问题所在)。我在某处读到过,使用java.concurrent库和CountDownLatch进行信号传输效率更高。我检查了concurrent.locks.Condition同样,但是this主题声明它只是(程序员方面)更安全和通用的构造,与notify/notifyAll相比没有性能优势。PeterLawrey建议在this中使用Concurrency库代替notify-notifyAll评论,所以现在我很困惑什么是

android - GCMIntentService + 在死线程上向处理程序发送消息

我的应用程序运行正常,但我遇到了以下错误:10-0414:04:38.182:W/MessageQueue(8625):Handler(android.media.MediaPlayer$EventHandler){416ad6b0}sendingmessagetoaHandleronadeadthread10-0414:04:38.182:W/MessageQueue(8625):java.lang.RuntimeException:Handler(android.media.MediaPlayer$EventHandler){416ad6b0}sendingmessagetoaHa

具有多线程的 Android SQLite 数据库

我正在开发一个必须使用多线程的应用程序。在我的应用程序中,我有一个SQLiteOpenHelper类的单个实例,其中我有方法可以打开和关闭数据库和一些插入和获取数据的方法。现在我的问题是,我在FirstThread中打开数据库并同时启动事务SecondThread也获取打开的数据库对象并启动事务。第一个线程完成它的进程并关闭另一边的数据库我的第二个线程正在工作并且第二个线程获取数据库已关闭。这是一些合乎逻辑的问题,请有人帮助我解决这个问题,我如何才能以正确的方式处理关闭数据库。提前致谢 最佳答案 Ihaveasingleinstan

android - 我的 AsyncTask 类中有其他线程。在执行以下方法之前,我如何等待它及其所有线程完成?

AsyncTask类启动了许多其他线程,因为我使用的是第三方库。我不确定库打开了多少个线程,但我想等待它们全部完成,然后再用它们获取的数据填充我的ListView。目前我正在休眠10000毫秒,但这不切实际,因为我不知道它有多大。这个问题的正确解决方案是什么?task=newmTask();task.execute(appsList);newThread(newRunnable(){publicvoidrun(){populateList();}}).start();}privateclassmTaskextendsAsyncTask,Void,Void>{ProgressDialog

android - 从后台线程添加 View

我正在尝试将多个TextView添加到已经膨胀的布局中。显示的信息是从数据库中提取的,为数据库中的每一行创建一个TextView。由于数据库可能非常大,我在后台线程中一次创建一个TextView,然后将其添加到前台。这里是在后台线程调用更新前台的函数:privateTextViewtemp;privatevoidaddClickableEvent(ReviewHistoryEvente){if(e==null){Log.e(tag,"Attemptedtoaddanulleventtoreviewhistory");return;}TextViewt=newTextView(getBa

android - 了解 UI 线程

我是Android的初学者,我对AndroidUIThread有一些困惑。现在,我知道除了创建UI的线程之外,没有任何线程可以修改它。太好了。这是我的第一个Android应用程序中的Activity,这让我有些困惑。publicclassNasaDailyImageextendsActivity{publicProgressDialogmodalDialog=null;//------------------------------------------------------------------------------@OverrideprotectedvoidonCreate